iT邦幫忙

1

關於AsyncTask

  • 分享至 

  • xImage
  •  

AsyncTask非同步任務,或稱異步任務,是一個相當常用的類別,是專門用來處理背景任務與UI的類別。

主執行緒又稱UI執行緒(UI Thread),任何有關UI的東西都在主執行緒中執行,若是你的程式佔據主執行緒很久,使用者體驗會非常的差,或者會直接崩潰關閉

進行網路下載或其他活動時 不允許使用UI主執行緒

值得一提的是
此類在 API 級別 30 中已棄用。
請改用標准java.util.concurrent
關於concurrent有時間再來專門寫一篇

最常見的AsyncTask 就是載入網路上的圖片URL 設定為你的Image圖片

基礎架構

//載入檔案任務類別 繼承了AsyncTask 
//其中三個參數分別是 1.傳入參數種類 2.回傳進度 3.回傳資料
private class DownloadImageTask  extends AsyncTask<String, Void, Bitmap> {
     
      ImageView mImageView;
      //建構式
        public DownloadImageTask(ImageView bmImage) {
            this.mImageView = bmImage;
        }
       //背景執行中的方法 取得URL圖片並轉為Bitmap 也就是BMP點陣圖
          protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try { 
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }
   //執行後 處理動作 這邊算是主UI線程了
     protected void onPostExecute(Bitmap bmp) {
            mImageView.setImageBitmap(bmp);
        }
 }

執行方法
new DownloadImageTask().execute(url1, url2, url3);


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言